package Initial

import (
	"fmt"
	"gamers/config"
	"gamers/runtime"
	"go.uber.org/zap"
	"os"
	"sync"
)

var (
	once sync.Once
)

func InitializeAll() {
	// 1. 初始化viper
	if err := config.InitialConfiguration(); err != nil {
		fmt.Printf("初始化配置信息失败：%s\n", err.Error())
		os.Exit(2)
	}
	// 2. 初始化日志
	if err := runtime.InitialZapLog(config.GlobalConf.LogConfig, config.GlobalConf.Mode); err != nil {
		fmt.Printf("初始化日志信息失败：%s\n", err.Error())
		os.Exit(2)
	}
	zap.L().Info("初始化日志配置成功")
	// 3. 初始化kubernetes集群
	once.Do(func() {
		err := InitializeKubernetes()
		if err != nil {
			zap.S().Error("kubernetes集群初始化失败")
			zap.S().Errorf("kubernetesMsg: %s", err.Error())
			os.Exit(2)
		}
		zap.L().Info("kubernetes集群初始化成功")
	})

}
